package com.adisi.objetos;

import java.util.Date;
import java.util.List;

import com.adisi.bd.JornadaDatos;

public class JornadaManager {

	/**
	 * Inicia una jornada laboral
	 * 
	 * @param chofer
	 * @param auto
	 */
	public static Alerta abrir(Chofer chofer, Auto auto, Date fechaApertura, Turno turno){
		JornadaDatos jd = new JornadaDatos();
		
		Jornada jornada = new Jornada(0, chofer, auto, fechaApertura, null, JornadaEstado.DISPONIBLE, turno );
		
		int id = jd.grabar(jornada);
		
		AutoManager.grabarUnAuto(auto);
		
		AutoManager.verificarAlertas(auto);
		
		return auto.getAlertaCercana();
	}


	
	
	public static void actualizar(Jornada jornada){
		JornadaDatos jd = new JornadaDatos();
		
		jd.grabar(jornada);
	}
	
	
	/**
	 * Cierra la jornada, colocandola en estado CERRADA.
	 * Se realiza el cierre de la caja
	 * 
	 * @param JornadaId
	 */
	public static void cerrar(Jornada jornada){
		JornadaDatos jd = new JornadaDatos();
		
		jornada.setEstado(JornadaEstado.CERRADA);
		jornada.setFechaFinal(new Date());
		
		jd.grabar(jornada);
		
		
		
	}
	
	public static List<Jornada> listar() throws Exception{
		JornadaDatos jd = new JornadaDatos();
		
		List<Jornada> jornadas;
		
		try {
			jornadas = jd.conseguirTodasLasJornadas();
		} catch (Exception e) {
			throw e;
		}
		
		for(Jornada jornada: jornadas) {
			
			jornada.setViajes(ViajeManager.conseguirTodosLosViajes(jornada));
			
		};
		
		return jornadas;
		
	}
	
	public static List<Jornada> listar(JornadaEstado estado) throws Exception {
		JornadaDatos jd = new JornadaDatos();
		
		List<Jornada> jornadas;
		
		try {
			jornadas = jd.conseguirTodasLasJornadas(estado);
		} catch (Exception e) {
			throw e;
		};
		
		return jornadas;
		
	}
	
	
	public static Jornada conseguirUnaJornada(int idJornada){
		JornadaDatos jd = new JornadaDatos();
		return jd.conseguirUnaJornada(idJornada);
	}

}
